# -*- coding: utf-8 -*-

from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.template.loader import render_to_string
from djtools.templatetags.djtools_templatetags import in_group
from djtools.utils import rtr, httprr, user_has_profile
from comum.utils import change_app

from inventario.models import Inventarios
from os.path import exists

@rtr()
@login_required
def index(request):
    """
    Tela inicial com informações relevantes de cada módulo que o usuário
    autenticado tenha acesso.
    """
    if request.user.is_superuser and not user_has_profile(request.user):
        return httprr('/admin/')
    
    contexto = dict()

    # GRATUIDADE
    if in_group(request.user, ['gratuidade_operador']) and 'gratuidade' in settings.INSTALLED_APPS:
        contexto['gratuidade'] = dict()
        contexto['gratuidade']['titulo'] = 'Gratuidade'
        contexto['gratuidade']['cadastro_pessoagratuidade'] = 'Nova Carteira'
        contexto['gratuidade']['lista_pessoagratuidade'] = 'Listar Carteiras'
        
    # INVENTARIO
    if in_group(request.user, ['inventario_operador']) and 'inventario' in settings.INSTALLED_APPS:
        contexto['inventario'] = dict()
        if exists('inventario.txt'):
            request.session['inventario_atual'] = open('inventario.txt').read()
        if request.session.get('inventario_atual'):
            ano = Inventarios.objects.get(pk = request.session['inventario_atual'])
            contexto['inventario']['titulo'] = 'Inventário %s' % ano
            contexto['inventario']['inventario_sessao'] = 'Alterar Ano do Inventário'
            contexto['inventario']['cadastro_itenspatrimoniais'] = 'Cadastrar'
        else:
            contexto['inventario']['titulo'] = 'Inventário'
            contexto['inventario']['inventario_sessao'] = 'Definir Ano do Inventário'
        contexto['inventario']['busca_itenspatrimoniais'] = 'Buscar'
        contexto['inventario']['relatorio_itenspatrimoniais'] = 'Relatório'        
    
    # RENDA
    if in_group(request.user, ['renda_operador']) and 'renda' in settings.INSTALLED_APPS:
        contexto['renda'] = dict()
        contexto['renda']['titulo'] = 'Renda'
        contexto['renda']['teste'] = 'Movimentação'
        
    # FROTA
    if in_group(request.user, ['frota_operador']) and 'frota' in settings.INSTALLED_APPS:
        contexto['frota'] = dict()
        contexto['frota']['titulo'] = 'Frota'
        contexto['frota']['cadastro_viagemagendamento'] = 'Agendar'
        contexto['frota']['busca_viagemagendamento'] = 'Avaliar'
    elif in_group(request.user, ['frota_padrao']) and 'frota' in settings.INSTALLED_APPS:
        contexto['frota'] = dict()
        contexto['frota']['titulo'] = 'Frota'
        contexto['frota']['cadastro_viagemagendamento'] = 'Agendar'
        
#    # ALMOXARIFADO
#    if in_group(request.user, ['rh_operador']) and 'rh' in settings.INSTALLED_APPS:
#        contexto['rh'] = dict()
#        contexto['rh']['titulo'] = 'Recursos Humanos'
#        contexto['rh']['teste'] = 'Teste'
#
#    # LICITAÇÃO
#    if in_group(request.user, ['rh_operador']) and 'rh' in settings.INSTALLED_APPS:
#        contexto['rh'] = dict()
#        contexto['rh']['titulo'] = 'Recursos Humanos'
#        contexto['rh']['teste'] = 'Teste'
    
    # RH
    if in_group(request.user, ['rh_operador']) and 'rh' in settings.INSTALLED_APPS:
        contexto['rh'] = dict()
        contexto['rh']['titulo'] = 'Recursos Humanos'
        contexto['rh']['busca_servidor'] = 'Servidor'
        
    # ACAOJUDICIAL
    if in_group(request.user, ['acaojudicial_operador']) and 'acaojudicial' in settings.INSTALLED_APPS:
        contexto['acaojudicial'] = dict()
        contexto['acaojudicial']['titulo'] = 'Ação Judicial'
        contexto['acaojudicial']['lista_acao_judicial'] = 'Ação Judicial'
        contexto['acaojudicial']['lista_grupo_acao'] = 'Grupo da Ação Judicial'
        contexto['acaojudicial']['busca_acao'] = 'Busca de Ação Judicial'
        
    # HELPDESK
    if in_group(request.user, ['helpdesk_operador']) and 'helpdesk' in settings.INSTALLED_APPS: 
        contexto['helpdesk'] = dict()
        contexto['helpdesk']['titulo'] = 'Suporte'
        contexto['helpdesk']['cadastro_ocorrencia'] = u'Nova Ocorrência'
        contexto['helpdesk']['lista_ocorrencia'] = u'Listar Ocorrências'
        contexto['helpdesk']['historico'] = u'Histórico'
    elif in_group(request.user, ['helpdesk_padrao']) and 'helpdesk' in settings.INSTALLED_APPS:
        contexto['helpdesk'] = dict()
        contexto['helpdesk']['titulo'] = 'HelpDesk'
        contexto['helpdesk']['historico'] = u'Histórico'
        
    # SERVICO
    if in_group(request.user, ['servico_operador']) and 'servico' in settings.INSTALLED_APPS: 
        contexto['servico'] = dict()
        contexto['servico']['titulo'] = 'Serviço'
        contexto['servico']['serv_interno'] = u'Serviço Interno'
    elif in_group(request.user, ['servico_padrao']) and 'servico' in settings.INSTALLED_APPS:
        contexto['servico'] = dict()
        contexto['servico']['titulo'] = 'Serviço'
        
    # SERVICO SOCIAL
    if in_group(request.user, ['servsocial_operador']) and 'servsocial' in settings.INSTALLED_APPS: 
        contexto['servsocial'] = dict()
        contexto['servsocial']['titulo'] = 'Serviço Social'
        contexto['servsocial']['add_compromisso'] = u'Novo Compromisso'
        contexto['servsocial']['list_compromisso'] = u'Listar Compromissos'
        
    return contexto

@login_required
def change_app_and_get_menu_template(request):
    """
    Muda a aplicação atual e retorna o conteúdo do menu apropriado.
    """
    change_app(request, request.GET['app_label'])
    if request.session['template_menu']: 
        return HttpResponse(render_to_string(request.session['template_menu']))
    else:
        return HttpResponse('')